Program TestDef;
{ Dieses Testprogramm demonstriert die Anwendung von Define
  Es berechnet die Fakultät entweder Iterativ oder Rekursiv }
{$define Itera }  { ist dies definiert, so Fakultät Iterativ berechnen }

Var inh : Integer;

{$ifDef Itera }
Function Fak( I : Integer) : Integer;
Var erg,z: Integer;
Begin
 erg:=1;
 If i>1
    then Begin
          For Z:=2 to I By 1 Do
            Erg:=Erg*z
         End;
 Return(Erg)
End;
{$endif }

{$IfNDef Itera }
Function Fak ( I : Integer) : Integer;
Begin
 if i<=1
    then return(1)
    else Return(Fak(i-1))
End;
{$endif}

Begin
 ClrScr;
 Write('Eingabe Zahl :');
 Readln(inh);
 Writeln('Fak(',inh,')=',fak(inh));
 Readln
End.
